<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
            //1.扩展运算符
                //1.1 含义
                    //扩展运算符（spread）是三个点（...）。它好比 rest 参数的逆运算，将一个数组转为用逗号分隔的参数序列。
                    //该运算符主要用于函数调用。
//                          function push(array,...items){
//								console.log(items);
//								array.push(...items);
//							}
//							var arr = [];
//							push(arr,1,2,3,4,5)
//							console.log(arr);//[1,2,3,4,5]
                    
//                          const numbers = [4,38];
//							const add = (x,y)=>x+y
//							const result = add(...numbers);
//							console.log(result);

                //1.2 替代函数的apply方法
                      //由于扩展运算符可以展开数组，所以不再需要apply方法，将数组转为函数的参数了。
                      
                //1.3 扩展运算
                      //1.3.1 复制数组
//		                        const a1 = [1,2];
//								const a2 = [...a1];
//								a2[0] = 2;
//								console.log(a2);//[2,2]
//								console.log(a1);//[1,2]

                      //1.3.2 合并数组
//                              const arr1 = ['a', 'b'];
//								const arr2 = ['c'];
//								const arr3 = ['d', 'e'];
//								
//								// ES5 的合并数组
//								arr1.concat(arr2, arr3); // [ 'a', 'b', 'c', 'd', 'e' ]
//								
//								// ES6 的合并数组
//								[...arr1, ...arr2, ...arr3] // [ 'a', 'b', 'c', 'd', 'e' ]

                      //1.3.3 与解构赋值结合
                          //扩展运算符可以与解构赋值结合起来，用于生成数组。
//                        		const [first,...rest] = [1,2,3,4,5,6];
//								console.log(first);//1
//								console.log(rest);//[2,3,4,5,6]
                          //如果将扩展运算符用于数组赋值，只能放在参数的最后一位，否则会报错。
                          
                      //1.3.4 字符串
                      //1.3.5 实现了 Iterator 接口的对象
                      //1.3.6 Map 和 Set 结构，Generator 函数
                      
            //2.Array.from()
                //Array.from方法用于将两类对象转为真正的数组：
                //类似数组的对象（array-like object）和可遍历（iterable）的对象（包括 ES6 新增的数据结构 Set 和 Map）。
//		                		let arrayLike = {
//								    '0': 'a',
//								    '1': 'b',
//								    '2': 'c',
//								    length: 3
//								};
//								
//								// ES5的写法
//								var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c']
//								
//								// ES6的写法
//								let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
	    </script>
	</body>
</html>
